package com.dbms.parser.ast;

/**
 * JoinNode (连接节点) 代表了 `SELECT` 语句中的一个 `JOIN` 子句的抽象语法树 (AST) 结构。
 * 例如：`... FROM table1 INNER JOIN table2 ON table1.id = table2.t1_id ...`
 * 中的 `INNER JOIN table2 ON table1.id = table2.t1_id` 部分。
 */
public class JoinNode extends AstNode {
    /**
     * 连接的类型，例如 "INNER", "LEFT", "RIGHT" 等。
     */
    private final String joinType;
    /**
     * 被连接的表（右表）的名称。
     */
    private final String rightTable;
    /**
     * ON 子句中的连接条件，表示为一个表达式节点。
     */
    private final ExpressionNode onCondition;

    public JoinNode(String joinType, String rightTable, ExpressionNode onCondition) {
        this.joinType = joinType;
        this.rightTable = rightTable;
        this.onCondition = onCondition;
    }

    /**
     * 获取连接类型。
     * @return 连接类型字符串
     */
    public String getJoinType() {
        return joinType;
    }

    /**
     * 获取右表的名称。
     * @return 右表名字符串
     */
    public String getRightTable() {
        return rightTable;
    }

    /**
     * 获取 ON 连接条件。
     * @return 代表连接条件的 ExpressionNode
     */
    public ExpressionNode getOnCondition() {
        return onCondition;
    }
}